﻿#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int LTDatatype;

//定义双向链表结构
typedef struct ListNode {
	LTDatatype data;
	struct ListNode* next;//指向下一个节点的指针
	struct ListNode* prev;//指向前一个节点的指针
}LTNode;
//初始化
LTNode* LTInit();
//打印链表
void LTPrint(LTNode* phead);
//判断是否为空
bool LTEmpty(LTNode* phead);
//尾插
//因为phead节点不会发生改变，所以传一级指针	
void LTPushBack(LTNode* phead, LTDatatype x);
//头插
void LTPushFront(LTNode* phead, LTDatatype x);
//尾删
void LTPopBack(LTNode* phead);
//头删
void LTPopFront(LTNode* phead);
//查找某个数据在链表中的位置
LTNode* LTFind(LTNode* phead, LTDatatype x);
//在pos位置之后插⼊数据----pos位置之前插入代码基本是一样的（双向的）
void LTInsert(LTNode* pos, LTDatatype x);
//删除pos位置的数据
void LTErase(LTNode* pos);
//销毁链表
void LTDesTroy(LTNode* phead);